C
C     ..................................................................
C
C        SUBROUTINE DPECS
C
C        PURPOSE
C           ECONOMIZATION OF A POLYNOMIAL FOR UNSYMMETRIC RANGE
C
C        USAGE
C           CALL DPECS(P,N,BOUND,EPS,TOL,WORK)
C
C        DESCRIPTION OF PARAMETERS
C           P     - DOUBLE PRECISION COEFFICIENT VECTOR OF GIVEN
C                   POLYNOMIAL
C           N     - DIMENSION OF COEFFICIENT VECTOR P
C           BOUND - SINGLE PRECISION RIGHT HAND BOUNDARY OF INTERVAL
C           EPS   - SINGLE PRECISION INITIAL ERROR BOUND
C           TOL   - SINGLE PRECISION TOLERANCE FOR ERROR
C           WORK  - DOUBLE PRECISION WORKING STORAGE OF DIMENSION N
C
C        REMARKS
C           THE INITIAL COEFFICIENT VECTOR P IS REPLACED BY THE
C           ECONOMIZED VECTOR.
C           THE INITIAL ERROR BOUND EPS IS REPLACED BY A FINAL
C           ERROR BOUND.
C           N IS REPLACED BY THE DIMENSION OF THE REDUCED POLYNOMIAL.
C           IN CASE OF AN ARBITRARY INTERVAL (XL,XR) IT IS NECESSARY
C           FIRST TO CALCULATE THE EXPANSION OF THE GIVEN POLYNOMIAL
C           WITH ARGUMENT X IN POWERS OF T = (X-XL).
C           THIS IS ACCOMPLISHED THROUGH SUBROUTINE DPCLD.
C           OPERATION IS BYPASSED IN CASE OF N LESS THAN 1.
C
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C           NONE
C
C        METHOD
C           SUBROUTINE DPECS TAKES AN (N-1)ST DEGREE POLYNOMIAL
C           APPROXIMATION TO A FUNCTION F(X) VALID WITHIN A TOLERANCE
C           EPS OVER THE INTERVAL (0,BOUND) AND REDUCES IT IF POSSIBLE
C           TO A POLYNOMIAL OF LOWER DEGREE VALID WITHIN TOLERANCE
C           TOL.
C           THE COEFFICIENT VECTOR OF THE N-TH SHIFTED CHEBYSHEV
C           POLYNOMIAL IS CALCULATED FROM THE RECURSION FORMULA
C           A(K) = -A(K+1)*K*L*(2*K-1)/(2*(N+K-1)*(N-K+1)).
C           REFERENCE
C           K. A. BRONS, ALGORITHM 37, TELESCOPE 1, CACM VOL. 4, 1961,
C           NO. 3, PP. 151.
C
C     ..................................................................
C
      SUBROUTINE DPECS(P,N,BOUND,EPS,TOL,WORK)
C
      DIMENSION P(1),WORK(1)
      DOUBLE PRECISION P,WORK
C
      FL=BOUND*0.5
C
C        TEST OF DIMENSION
C
    1 IF(N-1)2,3,6
    2 RETURN
C
    3 IF(EPS+ABS(SNGL(P(1)))-TOL)4,4,5
    4 N=0
      EPS=EPS+ABS(SNGL(P(1)))
    5 RETURN
C
C        CALCULATE EXPANSION OF CHEBYSHEV POLYNOMIAL
C
    6 NEND=N-1
      WORK(N)=-P(N)
      DO 7 J=1,NEND
      K=N-J
      FN=(NEND-1+K)*(N-K)
      FK=K*(K+K-1)
    7 WORK(K)=-WORK(K+1)*DBLE(FK)*DBLE(FL)/DBLE(FN)
C
C        TEST FOR FEASIBILITY OF REDUCTION
C
      FN=DABS(WORK(1))
      IF(EPS+FN-TOL)8,8,5
C
C        REDUCE POLYNOMIAL
C
    8 EPS=EPS+FN
      N=NEND
      DO 9 J=1,NEND
    9 P(J)=P(J)+WORK(J)
      GOTO 1
      END
